package cn.itrip.auth.service;

import cn.itrip.beans.domain.ItripUser;
import cn.itrip.common.EmptyUtils;
import cn.itrip.common.MD5;
import cn.itrip.common.RandomUtils;
import cn.itrip.common.RedisAPI;
import com.itrip.dao.ItripUserMapper;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service(value = "userService")
public class UserService {
    @Resource
    private SmsService smsService;
    @Resource
    private ItripUserMapper itripUserMapper;
    @Resource
    private MailService mailService;
    @Resource
    private RedisAPI redisAPI;
    private int expire=5;//过期时间（分钟）
    private Logger logger=Logger.getLogger(UserService.class);
    /**
     * 根据用户名查找用户
     * @param username
     * @return
     * @throws Exception
     */
    public ItripUser findByUsername(String username) throws Exception {
        Map<String, Object> param=new HashMap();
        param.put("userCode", username);
        List<ItripUser> list= itripUserMapper.getItripUserListByMap(param);
        if(list.size()>0)
            return list.get(0);
        else
            return null;
    }
    /**
     * 创建手机账号
     */
    public void itriptxCreateUserByPhone(ItripUser user) throws Exception {
        //发送短信验证码
        String code=String.valueOf(RandomUtils.random(4));
        smsService.send(user.getUserCode(), "1", new String[]{code,String.valueOf(expire)});
        //缓存验证码
        String key=user.getUserCode();
        redisAPI.set(key, expire*60, code);
        //保存用户信息
        itripUserMapper.insertItripUser(user);
    }
    public int updateItripUser(String userCode){
        return itripUserMapper.updateItripUser(userCode);
    }
//    /**
//     * 激活邮箱用户
//     */
//
//    public boolean activate(String email, String code) throws Exception {
//        String key="activation:"+email;
//        if(redisAPI.exist(key))
//            if(redisAPI.get(key).equals(code)){
//                ItripUser user=this.findByUsername(email);
//                if(EmptyUtils.isNotEmpty(user))
//                {
//                    logger.debug("激活用户"+email);
//                    user.setActivated(1);//激活用户
//                    user.setUserType(0);//自注册用户
//                    user.setFlatID(user.getId());
//                    itripUserMapper.updateItripUser(user);
//                    return true;
//                }
//            }
//
//        return false;
//    }
//    /**
//     * 短信验证手机号
//     * @throws Exception
//     */
//    public boolean validatePhone(String phoneNumber, String code) throws Exception {
//        String key="activation:"+phoneNumber;
//        if(redisAPI.exist(key))
//            if(redisAPI.get(key).equals(code)){
//                ItripUser user=this.findByUsername(phoneNumber);
//                if(EmptyUtils.isNotEmpty(user))
//                {
//                    logger.debug("用户手机验证已通过："+phoneNumber);
//                    user.setActivated(1);//激活用户
//                    user.setUserType(0);//自注册用户
//                    user.setFlatID(user.getId());
//                    itripUserMapper.updateItripUser(user);
//                    return true;
//                }
//            }
//        return false;
//    }
    /**
     * 创建用户
     * @param user
     * @throws Exception
     */
    public void itriptxCreateUser(ItripUser user) throws Exception {
        //发送激活邮件
        String activationCode = RandomUtils.random(6);
        mailService.sendMail(user.getUserCode(), activationCode);
        //保存用户信息
        itripUserMapper.insertItripUser(user);
    }

    public void itripCreateUser(ItripUser user) throws Exception {
        itripUserMapper.insertItripUser(user);
    }
    public ItripUser selectByUserCode(String userCode){
        return itripUserMapper.selectByUserCode(userCode);
    }
}
